/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

云硬盘相关接口
云硬盘相关接口，提供批量创建云硬盘，查询云硬盘，删除云硬盘，对云硬盘进行扩容，修改云硬盘信息以及使用快照恢复云硬盘等功能。

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef DiskApiModel_h
#define DiskApiModel_h
#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKCommon/JDCloudOCSDKCommon.h>
#import <JDCloudOCSDKDisk/DiskModel.h>


@interface DiskModifySnapshotAttributeRequest:JDCloudRequest

/// 快照名称
@property (strong,nonatomic,nonnull)  NSString*  name;
/// 快照描述，name和description必须要指定一个
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;
/// 快照ID
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;
-(id) initWithRegion:(NSString *)regionId
name:(NSString*)name
descriptionValue:(NSString*)descriptionValue
snapshotId:(NSString*)snapshotId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
name:(NSString*)name
descriptionValue:(NSString*)descriptionValue
snapshotId:(NSString*)snapshotId;

@end

@interface DiskCreateSnapshotResult : NSObject
/// 创建的快照ID
 @property (strong,nonatomic,nonnull)  NSString*  snapshotId;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithSnapshotId:(NSString*) snapshotId;
@end

@interface DiskDeleteSnapshotRequest:JDCloudRequest

/// 快照ID
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;
-(id) initWithRegion:(NSString *)regionId
snapshotId:(NSString*)snapshotId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
snapshotId:(NSString*)snapshotId;

@end

@interface DiskDescribeSnapshotRequest:JDCloudRequest

/// 快照ID
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;
-(id) initWithRegion:(NSString *)regionId
snapshotId:(NSString*)snapshotId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
snapshotId:(NSString*)snapshotId;

@end

@interface DiskRestoreDiskRequest:JDCloudRequest

/// 用于恢复云盘的快照ID
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;
/// 云硬盘ID
@property (strong,nonatomic,nonnull)  NSString*  diskId;
-(id) initWithRegion:(NSString *)regionId
snapshotId:(NSString*)snapshotId
diskId:(NSString*)diskId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
snapshotId:(NSString*)snapshotId
diskId:(NSString*)diskId;

@end

@interface DiskDescribeDiskRequest:JDCloudRequest

/// 云硬盘ID
@property (strong,nonatomic,nonnull)  NSString*  diskId;
-(id) initWithRegion:(NSString *)regionId
diskId:(NSString*)diskId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
diskId:(NSString*)diskId;

@end

@interface DiskCreateDisksResult : NSObject
/// DiskIds
 @property (strong,nonatomic,nonnull)  NSArray<NSString*>*  diskIds;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithDiskIds:(NSArray<NSString*>*) diskIds;
@end

@interface DiskExtendDiskRequest:JDCloudRequest

/// 扩容后的云硬盘大小，单位为GiB
@property (strong,nonatomic,nonnull)  NSNumber*  diskSizeGB;
/// 修改ssd.io1型云硬盘的iops数量，当且仅当ssd.io1型的云盘类型有效，步长是10.
@property (strong,nonatomic,nonnull)  NSNumber*  iops;
/// 云硬盘ID
@property (strong,nonatomic,nonnull)  NSString*  diskId;
-(id) initWithRegion:(NSString *)regionId
diskSizeGB:(NSNumber*)diskSizeGB
iops:(NSNumber*)iops
diskId:(NSString*)diskId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
diskSizeGB:(NSNumber*)diskSizeGB
iops:(NSNumber*)iops
diskId:(NSString*)diskId;

@end

@interface DiskDeleteDiskRequest:JDCloudRequest

/// 云硬盘ID
@property (strong,nonatomic,nonnull)  NSString*  diskId;
-(id) initWithRegion:(NSString *)regionId
diskId:(NSString*)diskId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
diskId:(NSString*)diskId;

@end

@interface DiskModifyDiskAttributeRequest:JDCloudRequest

/// 云硬盘名称，只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  name;
/// 云硬盘描述，允许输入UTF-8编码下的全部字符，不超过256字符。
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;
/// 云硬盘ID
@property (strong,nonatomic,nonnull)  NSString*  diskId;
-(id) initWithRegion:(NSString *)regionId
name:(NSString*)name
descriptionValue:(NSString*)descriptionValue
diskId:(NSString*)diskId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
name:(NSString*)name
descriptionValue:(NSString*)descriptionValue
diskId:(NSString*)diskId;

@end

@interface DiskDescribeSnapshotResult : NSObject
/// Snapshot
 @property (strong,nonatomic,nonnull)  Snapshot*  snapshot;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithSnapshot:(Snapshot*) snapshot;
@end

@interface DiskDescribeSnapshotResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskDescribeSnapshotResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskDescribeSnapshotResult*) result;
@end

@interface DiskDeleteSnapshotResult : NSObject

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
@end

@interface DiskModifySnapshotAttributeResult : NSObject

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
@end

@interface DiskCreateSnapshotResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskCreateSnapshotResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskCreateSnapshotResult*) result;
@end

@interface DiskModifySnapshotAttributeResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskModifySnapshotAttributeResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskModifySnapshotAttributeResult*) result;
@end

@interface DiskDescribeSnapshotsResult : NSObject
/// Snapshots
 @property (strong,nonatomic,nonnull)  NSArray<Snapshot*>*  snapshots;
/// 查询的快照数目
 @property (strong,nonatomic,nonnull)  NSNumber*  totalCount;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithSnapshots:(NSArray<Snapshot*>*) snapshots

    totalCount:(NSNumber*)totalCount;
@end

@interface DiskDescribeSnapshotsResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskDescribeSnapshotsResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskDescribeSnapshotsResult*) result;
@end

@interface DiskDeleteSnapshotResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskDeleteSnapshotResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskDeleteSnapshotResult*) result;
@end

@interface DiskDescribeSnapshotsRequest:JDCloudRequest

/// 页码, 默认为1, 取值范围：[1,∞)
@property (strong,nonatomic,nonnull)  NSNumber*  pageNumber;
/// 分页大小，默认为20，取值范围：[10,100]
@property (strong,nonatomic,nonnull)  NSNumber*  pageSize;
/// 查找快照的类型，可以为private，others，shared，默认为private
@property (strong,nonatomic,nonnull)  NSString*  snapshotSource;
/// snapshotId - 云硬盘快照ID，支持多个
   /// diskId - 生成快照的云硬盘ID，支持多个
   /// status - 快照状态，精确匹配，支持多个,取值为 creating、available、copying、deleting、error_create、error_delete
   /// name - 快照名称，模糊匹配，支持单个
   /// 
@property (strong,nonatomic,nonnull)  NSArray<Filter*>*  filters;
-(id) initWithRegion:(NSString *)regionId
pageNumber:(NSNumber*)pageNumber
pageSize:(NSNumber*)pageSize
snapshotSource:(NSString*)snapshotSource
filters:(NSArray<Filter*>*)filters;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
pageNumber:(NSNumber*)pageNumber
pageSize:(NSNumber*)pageSize
snapshotSource:(NSString*)snapshotSource
filters:(NSArray<Filter*>*)filters;

@end

@interface DiskCreateSnapshotRequest:JDCloudRequest

/// 创建快照规格
@property (strong,nonatomic,nonnull)  SnapshotSpec*  snapshotSpec;
/// 幂等性校验参数
@property (strong,nonatomic,nonnull)  NSString*  clientToken;
-(id) initWithRegion:(NSString *)regionId
snapshotSpec:(SnapshotSpec*)snapshotSpec
clientToken:(NSString*)clientToken;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
snapshotSpec:(SnapshotSpec*)snapshotSpec
clientToken:(NSString*)clientToken;

@end

@interface DiskExtendDiskResult : NSObject

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
@end

@interface DiskExtendDiskResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskExtendDiskResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskExtendDiskResult*) result;
@end

@interface DiskRestoreDiskResult : NSObject

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
@end

@interface DiskRestoreDiskResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskRestoreDiskResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskRestoreDiskResult*) result;
@end

@interface DiskDeleteDiskResult : NSObject

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
@end

@interface DiskDescribeDiskResult : NSObject
/// Disk
 @property (strong,nonatomic,nonnull)  Disk*  disk;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithDisk:(Disk*) disk;
@end

@interface DiskModifyDiskAttributeResult : NSObject

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
@end

@interface DiskDescribeDiskResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskDescribeDiskResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskDescribeDiskResult*) result;
@end

@interface DiskDeleteDiskResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskDeleteDiskResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskDeleteDiskResult*) result;
@end

@interface DiskCreateDisksRequest:JDCloudRequest

/// 创建云硬盘规格
@property (strong,nonatomic,nonnull)  DiskSpec*  diskSpec;
/// 购买实例数量；取值范围：[1,100]
@property (strong,nonatomic,nonnull)  NSNumber*  maxCount;
/// 幂等性校验参数
@property (strong,nonatomic,nonnull)  NSString*  clientToken;
-(id) initWithRegion:(NSString *)regionId
diskSpec:(DiskSpec*)diskSpec
maxCount:(NSNumber*)maxCount
clientToken:(NSString*)clientToken;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
diskSpec:(DiskSpec*)diskSpec
maxCount:(NSNumber*)maxCount
clientToken:(NSString*)clientToken;

@end

@interface DiskDescribeDisksResult : NSObject
/// Disks
 @property (strong,nonatomic,nonnull)  NSArray<Disk*>*  disks;
/// 查询的云硬盘数目
 @property (strong,nonatomic,nonnull)  NSNumber*  totalCount;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithDisks:(NSArray<Disk*>*) disks

    totalCount:(NSNumber*)totalCount;
@end

@interface DiskDescribeDisksResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskDescribeDisksResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskDescribeDisksResult*) result;
@end

@interface DiskCreateDisksResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskCreateDisksResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskCreateDisksResult*) result;
@end

@interface DiskModifyDiskAttributeResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property DiskModifyDiskAttributeResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(DiskModifyDiskAttributeResult*) result;
@end

@interface DiskDescribeDisksRequest:JDCloudRequest

/// 页码, 默认为1, 取值范围：[1,∞)
@property (strong,nonatomic,nonnull)  NSNumber*  pageNumber;
/// 分页大小，默认为20，取值范围：[10,100]
@property (strong,nonatomic,nonnull)  NSNumber*  pageSize;
/// Tag筛选条件
@property (strong,nonatomic,nonnull)  NSArray<DiskTagFilter*>*  tags;
/// diskId - 云硬盘ID，精确匹配，支持多个
   /// diskType - 云硬盘类型，精确匹配，支持多个，取值为 ssd,premium-hdd,ssd.io1,ssd.gp1,hdd.std1
   /// instanceId - 云硬盘所挂载主机的ID，精确匹配，支持多个
   /// instanceType - 云硬盘所挂载主机的类型，精确匹配，支持多个
   /// status - 可用区，精确匹配，支持多个
   /// az - 云硬盘状态，精确匹配，支持多个
   /// name - 云硬盘名称，模糊匹配，支持单个
   /// multiAttach - 云硬盘是否多点挂载，精确匹配，支持单个
   /// encrypted - 云硬盘是否加密，精确匹配，支持单个
   /// 
@property (strong,nonatomic,nonnull)  NSArray<Filter*>*  filters;
-(id) initWithRegion:(NSString *)regionId
pageNumber:(NSNumber*)pageNumber
pageSize:(NSNumber*)pageSize
tags:(NSArray<DiskTagFilter*>*)tags
filters:(NSArray<Filter*>*)filters;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
pageNumber:(NSNumber*)pageNumber
pageSize:(NSNumber*)pageSize
tags:(NSArray<DiskTagFilter*>*)tags
filters:(NSArray<Filter*>*)filters;

@end

#endif /* DiskApiModel_h */
